import Vue from 'vue'
import Router from 'vue-router'

import store from '../store'

Vue.use(Router)

// export default new Router({
//   routes: [
//     {
//       path: '/',
//       name: 'Hello',
//       component: Hello
//     }
//   ]
// })

const welcomeChildren = []

//对于路由信息，可以在进入页面时加载所有路由，路由信息只有两层结构，菜单信息是多层结构。
const menu = store.getters.getRoutes


//延时路由构造器，由于js作用域问题，需要单独封装成函数
const getResolve = component => {
  return resolve => {
    // 使用webpack 2.0 版本以上时， require 会返回 promise 对象，可以更好地处理异常
    require(['../components' + component], resolve)
    .then(()=>{
      //成功回调，什么也不做
    },(e)=>{    //失败回调
      alert(e)    //打开页面错误的时候组出提示
    })
  }
}

//把菜单加载到路由中，菜单是多级的，但是嵌套路由只是二级的
const put = (menu) => {
  for (var i in menu) {
    var m = menu[i]
    if (m.children) {
      m.path = '/welcome/' + m.m_id
      put(m.children)
    } else {
        welcomeChildren.push({
          path: m.path,
          component: getResolve(m.template)
      })
    }
  }
}

//异常页面
welcomeChildren.push({ path: '/welcome/error/:msg', component: require('../components/error.vue') })
//主页面
welcomeChildren.push({path:'/welcome/main',component: require('../components/main.vue')})

const routes = [
  { path: '/welcome', component: require('../components/welcome.vue'), children: welcomeChildren },
]

put(menu)
console.log(routes)

const router = new Router({
  routes // （缩写）相当于 routes: routes
})

router.push('/welcome/main')
// router.push('/welcome')

export default router;